---
sidebar_position: 9
---

# История коммитов

`HEAD` – это указатель, задача которого ссылаться на определенный коммит в репозитории.

:::note Команда `git log`
Показывает журналы фиксации.

Документация [здесь](https://git-scm.com/docs/git-log).
:::

Предположим, что в нашем тестовом репозитории мы 2 раза изменили файл `README` и записали изменения. Тогда результат выполнения команды `git log --oneline` будет иметь вид:

```bash
fbc8910 (HEAD -> main) Исправил замечание
90f038e Добавил описание о HEAD
02c9b2c Добавил README
```

Эти коммиты создавались в порядке от самого нижнего (`02c9b2c`) к самому верхнему (`fbc8910`). Каждый раз, когда мы записывали новый коммит в репозиторий, `HEAD` смещался и указывал на него.

После того как вы записали коммит с `id = fbc8910`, указатель `HEAD` стал показывать на него, т.е. данный коммит будет родителем для следующего, и когда мы сделаем еще один коммит, `HEAD` сместится.

Более подробно об указателе `HEAD` читайте в статье [devpractice.ru](https://devpractice.ru/git-for-beginners-part-7-head-and-tree-ish/)

*Пример истории коммитов (источник: [tproger.ru](https://tproger.ru/translations/beginner-git-cheatsheet/#part2))*:

![*История коммитов*](images/commit-history.jpg)

Коммиты хранят состояние файловой системы в определённый момент времени и указатели на предыдущие коммиты. Каждый коммит содержит уникальную контрольную сумму — идентификатор, который Git использует, чтобы ссылаться на коммит. Чтобы отслеживать историю, Git хранит указатель `HEAD`, который указывает на первый коммит (мы следуем по цепочке коммитов в обратном порядке, чтобы попасть к предыдущим коммитам).

Мы можем ссылаться на коммит либо через его контрольную сумму, либо через его позицию относительно `HEAD`, например `HEAD~4` ссылается на коммит, который находится 4 коммитами ранее `HEAD`.

Более подробную информацию о git log можно найти в статье на [tproger.ru](https://tproger.ru/translations/beginner-git-cheatsheet/#part2).

## Атрибуция

При подготовке статьи использован материал:

- [devpractice.ru](https://devpractice.ru/git-for-beginners-part-7-head-and-tree-ish/)
